package 练习10_synchronized锁的对象;

/**
 * 同步代码块（对象锁）
 * @ClassName: SyncDemo01
 * @Author: AllenSun
 * @Date: 2023/3/26 上午12:04
 */
public class SyncDemo01 implements Runnable {

    public static void main(String[] args) {
        SyncDemo01 demo01 = new SyncDemo01();
        new Thread(demo01,"线程1").start();
        new Thread(demo01,"线程2").start();
    }

    @Override
    public void run() {
        //指获取类SyncDemo01创建的实例对象demo01中的内置锁（锁定当前代码块执行者）
        //可以看到线程2必须要等到线程1释放了该锁后，才能执行
        synchronized (this) {
            System.out.println(Thread.currentThread().getName()+"开始执行");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+"执行结束");
        }
    }
}
